<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h2> 如何确定this的值？</h2>
   <p>找到这个函数的直接调用位置。然后按照下面四规则来判断this的绑定对象。</p>
<article>
    
    1.由new调用？绑定到新创建的对象。
    2.有call或apply或bind调用？绑定到指定的对象。
    3.由上下文对象调用？绑定到那个上下文对象。
    4.默认在严格模式下绑定到undefined，否则绑定到全局对象。
</article>
<footer>

    箭头函数不会使用标准的绑定规则，而是根据当前的词法作用域来决定this，具体来说，箭头函数会继承外层函数调用的this绑定（无论this绑定到什么）。这和self=this机制一样
</footer>
    <script>
        var a = 'window'
    var obj={
        a:'obj',
        b:()=>{
            let a=9
            this.b=3//this指向window
            console.log(1,this,this.a,a)//this指向window
            console.log('b',this.b,b,window.b)//3,3
        },
        c:function(){
            var a='c'
            console.log(2,this,this.a)//this指向obj对象
            return {
                fn:()=>{
                    console.log(22,a)//c
                }
                
            }
        }
    }
    console.log(obj.b());//undifine
    console.log(obj.c());//function
    console.log(obj.c().fn());//undifine
    obj.b1=()=>{console.log(3,this)}
    obj.b1();

    </script>
    
</body>
</html>